iT邦幫忙

2023 iThome 鐵人賽

0

Info

Walkthrough

  • 存取網頁後使用帳號和上關獲取的密碼登入,有上傳檔案的功能
    • Imgur
  • 點擊 View sourcecode 超連結查看後端 PHP 程式碼
    • Imgur
  • 分析程式碼邏輯後畫成流程圖如下,只要檔案大小不超過 4096 bytes 就能成功上傳,後續才會採用 MD5 來檢查檔案完整性,而在 __destruct() 時會呼叫 passthru() 串接檔名來執行指令
    • Imgur
  • 可參考 Day 0x02 Natas Level 0 → Level 1 的方法,透過 Burp Suite 的 Proxy 攔截封包,上傳 PHP 的 one-liner webshell,將檔名改成 CHA.php
    • Imgur
    • Imgur
  • 成功上傳,而 MD5sum 匹配失敗
    • Imgur
  • 使用 vim 或加上 -d 變更成 phar.readonly=Off,構造並生成惡意的 CHA.phar
    • Imgur
  • 上傳 CHA.phar,同樣使用 Proxy 攔截並修改檔案名稱
    • Imgur
  • 成功上傳,但同樣 MD5sum 匹配失敗
    • Imgur
  • 上傳任意檔案,透過 Proxy 將檔案名稱修改成 phar://CHA.phar
    • Imgur
  • 成功上傳,獲得下題的登入密碼
    • Imgur

Note

  • 不同於 Day 0x1B Natas Level 25 → Level 26,特別之處在於透過 phar:// 觸發,使 md5_file() 操作檔案時將 Phar 的序列化資料反序列化,變更 $signature = True 藉此忽略 MD5sum 的檢查,並由 $filename = 'CHA.php' 修改成執行第一次上傳的 PHP 腳本獲取密碼檔案
  • 第一次上傳的 webshell 檔名改成和 .phar 中相同即可,而最後上傳的檔案可以將檔名改成 phar://CHA.phar/CHA.php 或者 phar://CHA.phar/CHA

Summary

Reference


上一篇
Day 0x21 Natas Level 31 → Level 32
下一篇
Day 0x23 Natas Level 33 → Level 34
系列文
Natas 網頁安全:從入門到放棄35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言